\documentclass[a4paper]{article}

% Inclure un graphique 
%\usepackage{graphics}							% Le package à utiliser
%\begin{figure}[h] 								% [h] pour "here", [t] pour "top" et [b] pour "bottom"
%\scalebox{.5}{\includegraphics{schema.png}} 	% Réduit de 50% la taille
%\caption{légende} 	
%\label{Fig:nom_de_la_figure}					% Garde le compteur de schéma, utiliser avec \ref{Fig:nom_de_la_figure}
%\end{figure}

% Tirer un trait 
%\hrulefill

% Inclure du code source 
%\usepackage{listings}
%\lstset{language=[Objective]C}
%\begin{lstlisting}
%\end{lstlisting}

% Faire un tableau 
%\begin{tabular}{|l|c|c|}
%\hline
% &  &  \\
% &  &  \\
% &  &  \\
% &  &  \\
%\hline
%\end{tabular}

% Inclure un document PDF 
%\usepackage{pdfpages}
%\includepdf[pages={}]{document_a_joindre.pdf}

% Inclure des liens hypertext 
%\usepackage{hyperref}
%\hypersetup{
%	colorlinks=true,	%colorise les liens
%	urlcolor= blue,		%couleur des hyperliens
%	linkcolor= blue,	%couleur des liens internes
%}

% Gestion de bibliographie 
%\cite{une_biblio}
%\begin{thebibliography}
%\bibitem{une_biblio} Mr Machin, \href{http://www.son-site.org}
%\end{thebibliography}

\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage{cmbright}
\usepackage{amsfonts} % Pour les notations d'ensemble (natural,real...)
\usepackage{stmaryrd} % Pour les doubles crochet ex: \llbracket

\begin{document}
\lhead{DUCHENE Pierre - DUPONT Thomas} % Entête de Gauche
\rhead{Document de test} % Entête de droite
\pagestyle{fancy}

\section{Intro}
Ce projet de patron de conception observer parallélisé pose un certain nombre de problème au niveau du test.
Notamment le fait que le test unitaire est peu adapté puisque qu'il y a très peu de calcul dans ce projet.
La difficulté et donc les risques du projet ce retrouve par contre dans l'architecture de l'application.
C'est donc au niveau fonctionnel que la fiabilité du projet est critique.
C'est pourquoi les tests seront orienté fonctionnel.

\section{Tests fonctionnels}
\subsection{Protocol de test}
\subsubsection{Diffusion atomique}
Il y a deux choses principales à vérifier pour savoir si la diffusion atomique est respecté.
Il faut d'abord s'assurer que chaque observeur voit la même donnée mais aussi qu'aucune mise à jour ne soit perdue.
On va donc procéder aux tests suivants:\
\begin{itemize}
\item Test 1: Mettre le slider sur 1.\\
Résultat: Chaque afficheur dois afficher 1, la latence dépendant de la vitesse de l'afficheur.
\item Test 2: Mettre le slider sur 1 puis 2 juste après.\\
Résultat: Chaque afficheur dois afficher d'abord 1 puis une fois tous à jours, ils affichent tous 2.
\item Test 3: Cliquer sur le bouton "auto" et le désactiver lorsqu'il affiche 6.\\
Résultat: Les afficheurs doivent afficher les valeurs dans l'ordre
et ne pas se mettre à jour tant que tous les afficheurs n'ont pas afficher la valeur courante.
\end{itemize}

\subsubsection{Diffusion séquentielle}
La diffusion séquentielle à ceci de commun avec la diffusion atomique que chaque afficheur doit voir la même donnée mise à jour.
Mais à la différence de la diffusion atomique, si le capteur est modifié pendant une mise à jour, alors cette donnée ne sera pas diffusé.
On va donc procéder aux tests suivants:
\begin{itemize}
\item Test 1: Mettre le slider sur 1.\\
Résultat: Chaque afficheur dois afficher 1, la latence dépendant de la vitesse de l'afficheur.
\item Test 2: Mettre le slider sur 1 puis 2 immédiatement après,
les afficheurs ne doivent pas avoir eu le temps de ce mettre tous à jour avant le second appui.\\
Résultat: Chaque afficheur dois afficher 1 et ne pas afficher la valeur 2.
\item Test 3: Cliquer sur le bouton "auto" et le désactiver lorsqu'il affiche 6.\\
Résultat: Les afficheurs doivent afficher se mettre à jour uniquement quand tous on pu afficher la même valeur. On va donc voir certaine valeur "perdue".
\end{itemize}

\subsubsection{Diffusion par époque}
La diffusion par époque pour finir est celle qui est la moins contraignante.
Chaque afficheur est prévenu d'une modification du capteur mais il est possible,
à cause de la latence des afficheurs que ces derniers ne voient pas la valeur pour laquelle ils ont été notifié.
Ils disposent par contre d'une information supplémentaire, la version de la donnée.
On va donc procéder aux tests suivant:
\begin{itemize}
\item Test 1: Mettre le slider sur 1.\\
Résultat: Chaque afficheur doit afficher la valeur 1 ainsi que la version 1, la latence dépendant de la vitesse de l'afficheur.
\item Test 2: Mettre le slider sur 1 puis 2 immédiatement après,
les afficheurs ne doivent pas avoir eu le temps de ce mettre tous à jour avant le second appui.\\
Résultat: Les afficheurs les plus rapides doivent afficher la valeur 1 avec la version 1. Tandis que l'afficheur le plus lent doit afficher 2 avec la version 2.
\item Test 3: Cliquer sur le bouton "auto" et le désactiver lorsqu'il affiche 6.\\
Résultat: Les afficheurs ne sont plus du tout synchronisé mais ils affichent tous la bonne version avec la valeur.
Il faut juste s'assurer de l'équivalence entre la valeur et le numéro de version.
\end{itemize}

\subsection{Outils de tests et réalisation}
Pour réaliser ces tests nous avons utiliser les "Performances Tools" d'Apple.
Ils permettent d'enregistrer les actions utilisateurs et de les rejouer.
L'exécution des tests est conservé ce qui permet de comparer deux exécutions. 
Nous avons donc procéder à un ensemble de jeux de tests que nous avons enregistré dans les répertoires /SubjectObserver/Documentation/Tests.

\subsection{Perspective}
Malgré des outils assez intéressant pour rejouer les actions utilisateurs,
le fait d'avoir une application parallélisé rend le test plus difficile, notamment au niveau unitaire.
Il serait très intéressant d'avoir à disposition des outils mieux adapté car les méthodes actuelles restent fastidieuses et chronophages.

\end{document}